<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>品牌管理</title>
    <meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" name="viewport">
    <link rel="stylesheet" href="../plugins/bootstrap/css/bootstrap.min.css">
    <link rel="stylesheet" href="../plugins/adminLTE/css/AdminLTE.css">
    <link rel="stylesheet" href="../plugins/adminLTE/css/skins/_all-skins.min.css">
    <link rel="stylesheet" href="../plugins/angularjs/pagination.css">
    <link rel="stylesheet" href="../css/style.css">
    <script src="../plugins/jQuery/jquery-2.2.3.min.js"></script>
    <script src="../plugins/bootstrap/js/bootstrap.min.js"></script>
    <script src="../plugins/angularjs/angular.min.js"></script>
    <script src="../plugins/angularjs/pagination.js"></script>
    <script>
        var app = angular.module('pinyougou', ['pagination']);
        app.service('brandService', function ($http) {
            this.findAll = function () {
                return $http.get('/brand/list');
            }
            this.findByPage = function (pageNum, pageSize) {
                return $http.get('/brand/list/' + pageNum + '/' + pageSize);
            }
            this.search = function (pageNum, pageSize, searchEntity) {
                return $http.put('/brand/search/' + pageNum + '/' + pageSize, searchEntity);
            }
            this.findById = function (id) {
                return $http.get('/brand/' + id);
            }
            this.update = function (entity) {
                return $http.put('/brand', entity);
            }
            this.save = function (entity) {
                return $http.post('/brand', entity);
            }
            this.delete = function (ids) {
                return $http.post('/brand/delete', ids);
            }
        });
        app.controller('baseController', function ($scope) {
            $scope.reload = true;
            $scope.paginationConf = {
                //当前页
                currentPage: 1,
                totalItems: 0,
                //每页记录数
                itemsPerPage: 5,
                //每页记录数选项
                perPageOptions: [5, 10, 15, 20, 25],
                //页面初始化时将触发分页指令tmPagination,并调用onChange函数
                //随后当点击任意一页或重新选择每页记录数时都将调用onChange函数
                onChange: function () {
                    if (!$scope.reload) {
                        return;
                    }
                    $scope.reloadList();//重新加载
                }
            };
            $scope.reloadList = function () {
                $scope.search($scope.paginationConf.currentPage, $scope.paginationConf.itemsPerPage);
            };
            $scope.checkedIds = [];
            $scope.updateChecked = function ($event, id) {
                if ($event.target.checked) {
                    $scope.checkedIds.push(id);
                } else {
                    var index = $scope.checkedIds.indexOf(id);
                    $scope.checkedIds.splice(index, 1)
                }
            };
        });
        app.controller('brandController', function ($scope, $controller, brandService) {
            $controller('baseController', {$scope: $scope});
            $scope.findAll = function () {
                brandService.findAll().success(function (response) {
                    $scope.list = response;
                });
            };
            $scope.findByPage = function (pageNum, pageSize) {
                brandService.findByPage(pageNum, pageSize).success(function (response) {
                    $scope.list = response.rows;
                    $scope.reload = false;
                    $scope.paginationConf.totalItems = response.total;
                    setTimeout(function () {
                        $scope.reload = true;
                    }, 100);
                });
            };
            $scope.findById = function (id) {
                brandService.findById(id).success(function (response) {
                    $scope.entity = response;
                });
            };
            $scope.search = function (pageNum, pageSize) {
                brandService.search(pageNum, pageSize, $scope.searchEntity).success(function (response) {
                    $scope.list = response.rows;
                    $scope.reload = false;
                    $scope.paginationConf.totalItems = response.total;
                    setTimeout(function () {
                        $scope.reload = true;
                    }, 100);
                });
            };
            $scope.save = function () {
                //如果id不为空执行更新
                if ($scope.entity.id != null) {
                    brandService.update($scope.entity).success(function (response) {
                        if (response.success) {
                            //由于更新不会涉及到总量的变更,所以执行重新加载
                            $scope.reloadList();
                        } else {
                            alert(response.message);
                        }
                    });
                } else {
                    brandService.save($scope.entity).success(function (response) {
                        if (response.success) {
                            //添加成功后重新加载列表
                            //直接调用reloadList函数会去执行一次查询,查询完成后将修改paginationConf的totalItems值
                            //由于paginationConf的totalItems值发生了变化,所以又会去执行一次查询
                            //$scope.reloadList();
                            //既然知道添加成功了,那么说明总量增加了1个,那么就修改paginationConf的totalItems值,随后将触发onChange然后执行查询
                            $scope.paginationConf.totalItems = $scope.paginationConf.totalItems + 1;
                        } else {
                            //添加失败弹出错误信息
                            alert(response.message);
                        }
                    });
                }
            };
            $scope.delete = function () {
                var ids = $.param($scope.checkedIds, true)
                ids += '&_method=delete';
                brandService.delete(ids).success(function (response) {
                    if (response.success) {
                        $scope.paginationConf.totalItems = $scope.paginationConf.totalItems - $scope.checkedIds.length;
                        $scope.checkedIds = [];
                    } else {
                        alert(response.message);
                    }
                });
            };
        });
    </script>
</head>
<!--给body元素引用定义的pinyougou模块,在body元素当中的所有angular指令、表达式等将生效-->
<!--引用定义的brandController控制器,并调用控制器中定义的findAll方法来初始化body-->
<body class="hold-transition skin-red sidebar-mini" ng-app="pinyougou" ng-controller="brandController">
<!-- .box-body -->
<div class="box-header with-border">
    <h3 class="box-title">品牌管理</h3>
</div>

<div class="box-body">

    <!-- 数据表格 -->
    <div class="table-box">
        <!--工具栏-->
        <div class="pull-left">
            <div class="form-group form-inline">
                <div class="btn-group">
                    <button type="button" class="btn btn-default" title="新建" data-toggle="modal"
                            data-target="#editModal" ng-click="entity={}"><i class="fa fa-file-o"></i> 新建
                    </button>
                    <button type="button" ng-click="delete()" class="btn btn-default" title="删除"><i
                            class="fa fa-trash-o"></i> 删除
                    </button>
                    <button type="button" class="btn btn-default" title="刷新" onclick="window.location.reload();"><i
                            class="fa fa-refresh"></i> 刷新
                    </button>
                </div>
            </div>
        </div>
        <div class="box-tools pull-right">
            <div class="has-feedback">
                品牌名称：<input ng-model="searchEntity.name">
                <button class="btn btn-default" ng-click="reloadList()">查询</button>
            </div>
        </div>
        <!--工具栏/-->

        <!--数据列表-->
        <table id="dataList" class="table table-bordered table-striped table-hover dataTable">
            <thead>
            <tr>
                <th class="" style="padding-right:0px">
                    <input id="selall" type="checkbox" class="icheckbox_square-blue">
                </th>
                <th class="sorting_asc">品牌ID</th>
                <th class="sorting">品牌名称</th>
                <th class="sorting">品牌首字母</th>
                <th class="text-center">操作</th>
            </tr>
            </thead>
            <tbody>
            <tr ng-repeat="brand in list">
                <td><input type="checkbox" ng-click="updateChecked($event,brand.id)"></td>
                <td>{{brand.id}}</td>
                <td>{{brand.name}}</td>
                <td>{{brand.firstChar}}</td>
                <td class="text-center">
                    <button type="button" ng-click="findById(brand.id)" class="btn bg-olive btn-xs" data-toggle="modal"
                            data-target="#editModal">修改
                    </button>
                </td>
            </tr>
            </tbody>
        </table>
        <!--数据列表/-->
        <tm-pagination conf="paginationConf"></tm-pagination>

    </div>
    <!-- 数据表格 /-->


</div>
<!-- /.box-body -->

<!-- 编辑窗口 -->
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                <h3 id="myModalLabel">品牌编辑</h3>
            </div>
            <div class="modal-body">
                <table class="table table-bordered table-striped" width="800px">
                    <tr>
                        <td>品牌名称</td>
                        <td><input class="form-control" ng-model="entity.name" placeholder="品牌名称"></td>
                    </tr>
                    <tr>
                        <td>首字母</td>
                        <td><input class="form-control" ng-model="entity.firstChar" placeholder="首字母"></td>
                    </tr>
                </table>
            </div>
            <div class="modal-footer">
                <button class="btn btn-success" ng-click="save()" data-dismiss="modal" aria-hidden="true">保存</button>
                <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">关闭</button>
            </div>
        </div>
    </div>
</div>

</body>
</html>